<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        class person {
            static [Symbol.hasInstance]() {
                console.log(person);
                console.log('我被用来检测类型了');
                return true
            }
        }
        let o = {}
        //instanceof会触发Symbol.hasInstance的自动调用
        // 且返回值的真假是程序员控制的
        console.log(o instanceof person);
        
        // 当你想在对象里面创建一个绝对不会冲突的命法名或者属性名时，Symbol 就可以做到这一点。
        // Symbol 值通过Symbol函数生成。
        // Symbol函数前不能使用new命令，否则会报错。这是因为生成的 Symbol 是一个原始类型的值，不是对象。也就是说，由于 Symbol 值不是对象，所以不能添加属性。基本上，它是一种类似于字符串的数据类型



    </script>
</body>

</html>